home *** CD-ROM | disk | FTP | other *** search
/ Aminet 25 / Aminet 25 (1998)(GTI - Schatztruhe)[!][Jun 1998].iso / Aminet / util / boot / SetMan20.readme < prev    next >
Text File  |  1998-05-05  |  7KB  |  171 lines

  1. Short:    Patches SetFunction() to new better one - V2.0 (CA)
  2. Author:   mc6489@mclink.it (N. Salmoria),  merlin@thule.no (E. Sauvageau)
  3. Uploader: merlin@thule.no (Eric Sauvageau)
  4. Type:     util/boot
  5.  
  6.  
  7.                                SetFunction Manager
  8.  
  9.                              SetMan / SetManager V2.0
  10.  
  11.  
  12.   V1.0 : Copyright © 1991,1992 by
  13.  
  14.          Nicola Salmoria
  15.          Via Piemonte 11
  16.          53100 Siena ITALY
  17.  
  18.          Internet: mc6489@mclink.it
  19.  
  20.  
  21.   V2.0 : Copyright © 1998 by
  22.   
  23.          Eric Sauvageau
  24.          5338 10th Avenue
  25.          Montreal, QC
  26.          H1Y-2G6
  27.          CANADA
  28.          
  29.          (Snail address valid until late spring '98)
  30.  
  31.  
  32.          Internet: merlin@thule.no
  33.                    http://www.thule.no/~merlin/
  34.          
  35. This program is FREEWARE. It is NOT, and will never be, public domain.
  36. Copy it as much as you can (provided no charge is made and the archive is left
  37. intact). It cannot be included in any commercial program without the written
  38. permission of the author.
  39.  
  40.  
  41. REQUIREMENTS
  42. ------------
  43. Since V2.0, SetMan requires Kickstart 2.04 or better to run.  SetManager 
  44. will also require ClassAct 2.0 for its GUI (latest classes can be found 
  45. on the Internet at ftp.warped.com /pub/amiga/classact or 
  46. ftp.thule.no /pub/classact/).  SetManList only requires Kickstart 2.04.
  47.  
  48.  
  49. NOVICE USERS
  50. ------------
  51. The program 'SetMan' should be put in C: and executed as the first command in
  52. the startup-sequence. When I say first, I mean FIRST!!  Run it even before
  53. SetPatch.
  54.  
  55. If you're not expert with the Amiga operating system, all you need to know about
  56. SetMan is that it will, under certain circumstances, avoid GURUs. Read on for
  57. more infos.
  58.  
  59.  
  60.  
  61. EXPERT USERS
  62. ------------
  63. Let's go into details. There's a function in exec.library, whose name is
  64. SetFunction(). You know that Amiga libraries contain a 'jump table', where are
  65. stored the addresses of every function in the library. Library functions are
  66. always executed via the jump table, and NEVER through absolute addressing.
  67. SetFunction() allows the user to modify the jump table, in order to insert a
  68. custom routine in place of the standard one.
  69. For example, one could modify the DisplayBeep() vector to play a sound instead
  70. of flashing the screen.
  71.  
  72. SetFunction() is a very useful feature of the Amiga operating system, but it has
  73. the major drawback that there's no system supervising of concurrent use of the
  74. same vector by different tasks. Under certain circumstances, that can be deadly.
  75. Before removing its custom vector, a program should check that it was not
  76. modified again. However, very few do that, and so if you do not terminate such
  77. program in REVERSE order of when you executed them, you'll probably get a system
  78. crash.
  79.  
  80. SetMan modifies the SetFunction() vector, and inserts a custom routine which
  81. solves the previous problems. It keeps a linked list of all changes to
  82. the jump tables, and allows any program to remove its vector at any time.
  83.  
  84.  
  85. In this archive you will find two additional tools:
  86.  
  87. SetManager - it is a Commodity that will allow you to view the list of all
  88.              modified vectors, with the name of the program which inserted 
  89.              a custom routine, the address of that routine, and the current 
  90.              status.  Status will usually be 'active'; if you double-click 
  91.              on the function name, you can disable it, thus removing the 
  92.              custom function.  The third possible state is 'removed', which 
  93.              only occurs when you don't quit programs in the correct
  94.              order I explained later.  It's there for your information, 
  95.              but is absolutely no problem.  When you exit the other program 
  96.              which uses the same vector, both will disappear from the list.
  97.  
  98. NOTE: modified vectors are shown as 'offset' 'library name'. However, SetManager
  99. is able to read the standard 'xxx_lib.fd' files, provided by Commodore.
  100. Just specify the path where those files are located by using the FDPATH 
  101. argument (by default, FD: will be scanned).  With the help of these  files, 
  102. SetManager will display the true function names, instead of offsets.
  103.  
  104.  
  105. SetManList - a CLI command that lets you list the list of all modified 
  106.              vectors in a CLI, just like SetManager does.  It supports 
  107.              two arguments:  NOFD (do not parse .fd files) and FDPATH 
  108.              (location of your .fd files, FD: being the default).
  109.              You can break the output by pressing Ctrl-C.
  110.  
  111.  
  112. PROGRAMMERS
  113. -----------
  114. To know if SetMan is running, all you have to do is search for a public MsgPort
  115. named "SetMan".  When running, you can safely install and remove patches 
  116. at any time through SetFunction(), SetMan will take care of ensuring that 
  117. any patches applied over yours is properly installed instead of the former 
  118. one.
  119.  
  120.  
  121.  
  122. BUGS AND INCOMPATIBILITIES
  123. --------------------------
  124. There are no known bugs in this version of SetMan.
  125.  
  126. A few more words should be spent on compatibility problems.  Due to the 
  127. very different procedures followed by the original SetFunction() and
  128. by SetMan, it's not possible to guarantee a 100% compatibility with every
  129. program around. Every effort has been made to avoid every possible problem;
  130. SetMan handles correctly every strange behaviour I could think about; the 
  131. only way to confuse SetMan should be using two diffrent programs 
  132. communicating through a message port and doing very strange things. I'm 
  133. almost sure such things things should never happen.
  134.  
  135. I've encountered a problem with a program called 'TurboTopaz', which refuses 
  136. to quit saying that 'Vector has been changed'. That's true, 'cos SetMan 
  137. puts a function of its own ahead of the custom one; if TurboTopaz used 
  138. SetFunction(), it would receive in return the value it expects, but it 
  139. reads directly the jump table, something I believe is not supported by 
  140. Commodore.
  141.  
  142. I use a lot of programs which call SetFunction(), and none of them has 
  143. problems with SetMan.
  144.  
  145.  
  146.  
  147. ACKNOWLEDGEMENT
  148. ---------------
  149. I'd like to thank Marco Ciuchini who pointed out an important incompatibility
  150. problem which I have been able to completely remove.
  151.  
  152. (Eric: I'd like to thank Nicola for writing SetMan, and for sending me the 
  153. sources so I could do some work on it.  He's the real man behind SetMan, 
  154. I merely updated it, especialy SetManager which I rewrote to offer some 
  155. modern features it was missing like turning it into a Commodity and giving 
  156. it a more advanced GUI.)
  157.  
  158.  
  159. ============================= Archive contents =============================
  160.  
  161. Original  Packed Ratio    Date     Time    Name
  162. -------- ------- ----- --------- --------  -------------
  163.     3548    2445 31.0% 18-Mar-98 16:13:12 +setman
  164.     5856    3390 42.1% 18-Mar-98 15:40:54 +setmanlist
  165.     3296    1605 51.3% 18-Mar-98 16:25:58 +CHANGES-2.0.txt
  166.     6214    2844 54.2% 18-Mar-98 16:18:44 +setman.doc
  167.    21536    9187 57.3% 18-Mar-98 15:40:46 +setmanager
  168.     1855    1313 29.2% 26-Dec-97 19:43:18 +setmanager.info
  169. -------- ------- ----- --------- --------
  170.    42305   20784 50.8% 20-Mar-98 21:52:22   6 files
  171.